home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / probots.arc / CHASER.PR < prev    next >
Text File  |  1991-04-28  |  2KB  |  75 lines

  1.  
  2.   PROCEDURE CHASER;
  3.  
  4. {
  5.  
  6. Based on a C-Robot by Kazuhiro Yabe
  7.  
  8. }
  9.  
  10.   VAR
  11.     save_dmg       : Integer;
  12.     cur_dmg        : Integer;
  13.     speed          : Integer;
  14.     dir            : Integer;
  15.     Range          : Integer;
  16.     degree         : Integer;
  17.  
  18.     PROCEDURE chkdmg;
  19.     BEGIN 
  20.       cur_dmg := damage;
  21.       IF (cur_dmg <> save_dmg) THEN
  22.         BEGIN
  23.           save_dmg := cur_dmg;
  24.           speed := 50; {maximum speed that robot can still turn}
  25.           dir := Random(359);
  26.         END;
  27.     END; {chkdmg}
  28.  
  29.     PROCEDURE walking;
  30.     BEGIN 
  31.       speed := 50; {maximum speed that robot can still turn}
  32.       IF (loc_x < 200) THEN dir := 0
  33.       ELSE IF (loc_x > 800) THEN dir := 180
  34.       ELSE IF (loc_y < 200) THEN dir := 90
  35.       ELSE IF (loc_y > 800) THEN dir := 270;
  36.       drive(dir, speed);
  37.     END; {walking}
  38.  
  39.     PROCEDURE shoot;
  40.     VAR return     : Boolean;
  41.     BEGIN 
  42.       return := False;
  43.       REPEAT
  44.         REPEAT
  45.           Range := scan(degree, 10);
  46.           IF (Range > 0) THEN
  47.             BEGIN
  48.               cannon(degree, Range); {while he's there, shoot at him. }
  49.               drive(degree, 100); {charge foe at top speed!}
  50.               return := True;
  51.             END;
  52.         UNTIL Range = 0;
  53.         IF (degree >= 360)
  54.         THEN degree := 0
  55.         ELSE degree := degree+20;
  56.         walking;
  57.       UNTIL return;
  58.     END; {shoot}
  59.  
  60.   BEGIN {Chaser Main}
  61.  
  62.     speed := 50; {maximum speed that robot can still turn}
  63.     dir := 0;
  64.     degree := 0;
  65.     save_dmg := damage;
  66.  
  67.     REPEAT { Until Dead or Winner }
  68.       shoot;
  69.       chkdmg;
  70.       walking; { move at max speed that can still turn }
  71.     UNTIL Dead OR Winner;
  72.  
  73.   END; { end of Chaser main }
  74.  
  75.